from django.db.models.signals import post_syncdb
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import Permission

first_run = True

def add_view_permissions(sender, created_models, **kwargs):
    """
    This syncdb hooks takes care of adding a view permission too all our 
    content types.
    """
    global first_run
    
    if first_run:
        # for each of our content types
        for content_type in ContentType.objects.all():
            # build our permission slug
            codename = "view_%s" % content_type.model
    
            # if it doesn't exist..
            if not Permission.objects.filter(content_type=content_type, codename=codename):
                # add it
                Permission.objects.create(content_type=content_type,
                                          codename=codename,
                                          name="Can view %s" % content_type.name)
    
    first_run = False
# check for all our view permissions after a syncdb
post_syncdb.connect(add_view_permissions)